package com.munichosica.myapp.controller.Tienda;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.munichosica.myapp.controller.Usuario.UsuariosController;
import com.munichosica.myapp.dto.Tienda;
import com.munichosica.myapp.dto.Usuario;
import com.munichosica.myapp.exceptions.TiendaDaoException;
import com.munichosica.myapp.factory.TiendaDaoFactory;

@Controller
@RequestMapping("/Tienda")
public class TiendaController {
	Logger logger=Logger.getLogger(UsuariosController.class);
	
	@RequestMapping(value="Listar.htm", method=RequestMethod.POST)	
	public @ResponseBody List <Tienda> listar(@RequestParam("criterio") String criterio,
			@RequestParam("texto") String texto, @RequestParam("estado") String estado){
		logger.info("Ingreso a tienda/Listar.htm");
		List<Tienda> list=null;
		try {
			list=TiendaDaoFactory.create().listarPorCriterio(criterio, texto, estado);
		} catch (TiendaDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return list;
	}
	
	@RequestMapping(value="Procesar.htm", method=RequestMethod.POST)
	public @ResponseBody String procesar(HttpServletRequest request,Tienda tienda){
		try {
			HttpSession session=request.getSession(true);
			Usuario usuario=(Usuario) session.getAttribute("USUARIO");
			if(tienda.getTiecodigoI()==null||tienda.getTiecodigoI()<1){
				tienda.setTieusuarioregistraV(usuario.getUsuusuarioV());
				tienda.setTieipV(request.getRemoteAddr());
				TiendaDaoFactory.create().insertar(tienda);
			}else{
				tienda.setTieusuarioactualizaV(usuario.getUsuusuarioV());
				tienda.setTieipV(request.getRemoteAddr());
				TiendaDaoFactory.create().modificar(tienda);
			}
		} catch (TiendaDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return String.valueOf(tienda.getTiecodigoI());
	}
	
	@RequestMapping(value="Obtener.htm", method=RequestMethod.GET)
	public @ResponseBody Tienda obtener(@RequestParam("codigo") Integer codigo){
		try {
			return TiendaDaoFactory.create().obtener(codigo);
		} catch (TiendaDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return null;
	}
	
	@RequestMapping(value="Eliminar.htm", method=RequestMethod.GET)
	public @ResponseBody String eliminar(HttpServletRequest request,@RequestParam("codigo") Integer codigo){
		try {
			HttpSession session=request.getSession(true);
			Usuario usuario=(Usuario) session.getAttribute("USUARIO");
			Tienda tienda=new Tienda();
			tienda.setTieusuarioactualizaV(usuario.getUsuusuarioV());
			tienda.setTieipV(request.getRemoteAddr());
			tienda.setTiecodigoI(codigo);
			TiendaDaoFactory.create().eliminar(tienda);
		} catch (TiendaDaoException e) {
			logger.error(e.getMessage(), e);
		}
		return String.valueOf(codigo);
	}
}
